from loguru import logger
import os
import sys

LOG_FILE = 'translator.log'
ROTATION_TIME = '02:00'

class Logger:
    def __init__(self, name='translator', log_dir='logs', debug=False):
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)
        log_file_path = os.path.join(log_dir, LOG_FILE)

        # 移除默认的 loguru 处理器
        '''
删除默认的 loguru 处理器是为了确保日志只输出到我们自定义的处理器中，而不会同时输出到默认的处理器中。
默认情况下，loguru 会在控制台输出日志信息。但是在这里，我们希望将日志信息输出到我们自定义的控制台处理器和文件处理器中，避免重复输出同样的日志信息。
因此，我们通过 `logger.remove()` 来删除默认的处理器，然后重新添加我们自己定义的处理器，以满足我们的需求。这样做可以确保日志信息只被发送到我们指定的处理器中，避免产生重复的输出。
        '''
        logger.remove()

        # 输出到控制台的日志
        level = 'DEBUG' if debug else 'INFO'
        logger.add(sys.stdout, level=level)

        # 输出到log文件的日志
        logger.add(log_file_path, rotation=ROTATION_TIME, level="DEBUG")

        self.logger = logger


# 创建全局日志记录器对象
LOG = Logger(debug=True).logger


# Test logger
if __name__ == '__main__':
    log = Logger().logger
    log.debug("This is a debug message.")  # 因为默认是INFO级别，所以console不会显示debug的信息，但是日志文件中会记录。
    log.info("This is an info message.")
    log.warning("This is a warning message.")
    log.error("This is an error message.")